<?php
	include_once('class.Conexao.php');
	include_once('class.Geral.php');
	include_once('class.Paginador.php');
	include_once('class.TemplatePower.php');

	class Tabela{
		var $tpl;
		var $not_db1;
		
		var $sql = '';
		
		//PAGINADOR
		
		var $regppage = 10;
		var $showpag = 3;
		var $pagina = 1;
		
		//URLS JAVASCRIPT
		var $url_busca = '';
		var $url_man = '';
	
		var $alias = array();
		//construtor
		function GeraTabela(){
			$this->not_db1 = new Persist;
			$this->tpl = new TemplatePower('../../html/modelo/lista_tabela.html');
			$this->tpl->prepare();
		}
		// GERA O CAMPO DE BUSCAS
		// USE ESTE METODO APENAS APOS A INSERCAO DO SQL
		// USE DPS DE SETALIAS
		function geraCamposBusca($tabela){
			$nome_tabelas = $this->geraCamposTabela();	
			$x=0;
			foreach($nome_tabelas as $v){
				
				
				if(@$tabela[$v]['tipo'] == 'CHECKBOX'){
					//SE FOR UMA CHECKBOX CRIA LOOKUP
					$db = new Persist;
					
					$this->tpl->newBlock('INPUT_RADIO');
					$db->sql = $tabela[$v]['query'];
					$db->ler("Sim");
					
					$campo1 = $db->var_dado[0];
					$campo2 = $db->var_dado[1];
					
					while($db->ini()){
						
						$this->tpl->assign("alias",$this->alias[$x]);
						
						$this->tpl->newBlock('INPUT_RADIO_ITEM');	
						
						$comando = '$this->tpl->assign("valor",$v)';
						eval("$comando;");
						
						$comando = '$this->tpl->assign("lookup",$db->'.$campo1.')';
						eval("$comando;");
						
						$comando = '$this->tpl->assign("label",$db->'.$campo2.')';
						eval("$comando;");

					}
				}else{
					//CRIA CAMPOS PARA PESQUISAA
					if(@$tabela[$v]['tipo'] == 'RANGE')
						$this->tpl->newBlock("INPUT_RANGE");
					else
						$this->tpl->newBlock("INPUT_TEXT");
					
					if(@$this->alias[$x] != '')
						$this->tpl->assign("alias",$this->alias[$x]);
					else
						$this->tpl->assign("alias",$v);
					
					$this->tpl->assign("valor",$v);
					
				}
				//SE O VALOR DO ARRAY ASSOCIATIVO N FOR NULL ELE GRAVA O NOME DO LABEL COM O NOME DO ALIAS E O NOME DO INPUT O NOME DO BANCO
				$x++;
						
			}
			$this->tpl->gotoBlock("_ROOT");
		}
		//PASSE O ARRAY GET
		function criaFiltroSql($array){
			// PEGA CADA UM DO ARRAY E SEPARA ENTRA A CHAVE(INDICE) E O VALOR
			
			//RETIRA INDICE PAGINA
			$array['pagina'] = '';
			if(count($array) > 0){
				$sql = ' WHERE  1 ';
				$numero_array = count($array);
				$x=0;
				while (list($key, $value) = each($array)) {
					//CAMPOS RANGE
					 
					 if($value != ''){ 
					 	if(substr($key,-2,2) == '_i')
							$sql .= " AND ".substr($key,0,strlen($key)-2)." >= '$value' ";
					 	else if(substr($key,-2,2) == '_f')
							$sql .= " AND ".substr($key,0,strlen($key)-2)." <= '$value' ";
						else
							$sql .= " AND $key = '$value' ";
					
					 }
					  
					 
				}
				$this->sql .= $sql;
			}
			
		}
		
		//Troca alias da tabela
		function setAlias($parametros = array()){
			$nome_tabelas = $this->geraCamposTabela();
			
			$x=0;
			foreach($nome_tabelas as $v){
				if(@$parametros[$v]['alias'] != '')
					$nome_tabelas[$x] = $parametros[$v]['alias'];
				$x++;	 
			}
			
			$this->alias = $nome_tabelas;
		}
	
		//RETURN CAMPOS TABELA
		function geraCamposTabela(){
			
			$this->not_db1->sql = $this->sql;
			$this->not_db1->ler("Sim");
			
			foreach($this->not_db1->var_dado as $v)
				$elementos_tabela[] = $v;	
				
			return $elementos_tabela;
		}
		
		function montaTabelaPesquisa(){
			//BOTOES
			$this->tpl->assign("url_busca",$this->url_busca);
			$this->tpl->assign("url_man_novo",$this->url_man);
			$this->tpl->assign("url_man_editar",$this->url_man);
			$this->tpl->assign("url_man_excluir",$this->url_man);
			
			//PAGINADOR
			$paginador = new Paginacao($this->regppage,$this->showpag);
			
			$this->tpl->assign('pag',$paginador->montaPaginacao($this->sql,$this->url_busca,$this->pagina));
			$this->sql = $paginador->montaQuery($this->sql,$this->pagina);
			
			//COLUNAS E ALIAS
			$numero_colunas = 0;
			$nome_tabelas = $this->geraCamposTabela($this->sql);
			
			
			//ETIQUETA COM OS ALIAS
			foreach($this->alias as $v){
				if(is_string($v)){
					$this->tpl->newBlock("LINHA");
					$this->tpl->assign("nome_tabela",$v);
				}
			}
			
			$this->not_db1->sql = $this->sql;
			$this->not_db1->ler();
			
			while($this->not_db1->ini()){
				////LINHA DAS TABELAS
				$this->tpl->newBlock("LOOP");
			
				for($x=0;$x<count($nome_tabelas);$x++){
					$this->tpl->newBlock("LINHA_VALOR");
					//COLUNAS DAS TABELAS
					$comando = '$this->tpl->assign("valor",$this->not_db1->'.$nome_tabelas[$x].')';
					eval("$comando;");
				}
			}
			
			$this->tpl->gotoBlock("_ROOT");
			//MONTA TEMPLATE
			$this->montaTemplate();
		}
		
		function montaTemplate(){
			$this->tpl->
			$this->tpl->printToScreen();
		}
	}
?>